/**
 * http://usejsdoc.org/
 * @class observable
 * @desc 观察者类
 */

module.exports = function(){
	var m_obserSet = [];
	var _self = this;
	
	/**
	 * @desc 添加观察者
	 * @param object observer 
	 */
	this.addObser = function(observer){
		m_obserSet.push(observer);
	};
	
	
	/**
	 * @desc 删除观察者
	 * @param object observer 
	 */
	this.removeObser = function(observer){
		if(m_obserSet[observer]){
			delete m_obserSet[observer];
		}
	};
	
	/**
	 * @desc 通知所有观察者
	 * @param object observer 
	 */
	this.doAction = function(){
		console.log('Observable do some action');
		_self.notifyAllObser();
	};
	
	/**
	 * @desc 执行所有观察者中的update方法
	 * @param object observer 
	 */
	this.notifyAllObser = function(){
		for(var key in m_obserSet) {
			m_obserSet[key].update();
		}
	};
}; 
